İkili Arama
İkili arama, bir sıralı dizide belirli bir öğenin konumunu bulmak için kullanılan etkili bir arama algoritmasıdır. Algoritma, dizinin ortasındaki öğeyi hedef öğe ile karşılaştırır ve hedef öğenin sol veya sağ tarafında kalan yarısını atarak aramayı sürdürür.
İkili arama algoritması yalnızca sıralı dizilerde uygulanabilir. Dizinin sıralı olması, algoritmanın doğru bir şekilde çalışabilmesi için kritik öneme sahiptir.
Aşağıdaki C kodu, bir sıralı dizi içinde aranan bir öğenin konumunu bulmak için ikili arama algoritmasını göstermektedir:
#include <stdio.h>
int binary_search(int arr[], int left, int right, int key) {
if (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid; // öğe bulunduğunda konumunu döndürür
} else if (arr[mid] > key) {
return binary_search(arr, left, mid - 1, key); // sol yarıyı arar
} else {
return binary_search(arr, mid + 1, right, key); // sağ yarıyı arar
}
}
return -1; // öğe bulunamadığında -1 döndürür
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
int key = 4;
int result = binary_search(arr, 0, size - 1, key);
if (result == -1) {
printf("Öğe bulunamadı.");
} else {
printf("Öğe %d konumunda bulundu.", result);
}
return 0;
}
Kodunuzun verimli çalışmasını sağlamak için, her zaman giriş dizisinin sıralı olduğundan emin olun. Ayrıca, dizinin boyutunu iyi yönetmek önemlidir.
Bu kod örneğinde, binary_search
fonksiyonu, arr
sıralı dizisinde left
ve right
indisleri arasında aranan key
öğesini bulmak için kullanılır. Fonksiyon, dizinin ortasındaki öğe ile hedef öğe karşılaştırır ve hedef öğenin sol veya sağ tarafında kalan yarıyı atarak aramayı sürdürür. Bu işlem, hedef öğe bulunana kadar devam eder.
İkili arama algoritması, zaman karmaşıklığı açısından O(log n)'dir, bu da büyük verilerle çalışırken oldukça etkilidir.
main
fonksiyonu, örnek bir sıralı dizi ve aranacak öğe belirler ve binary_search
fonksiyonunu kullanarak öğenin konumunu bulur. Eğer öğe bulunamazsa "Öğe bulunamadı." çıktısı verilir, bulunursa "Öğe `` konumunda bulundu." şeklinde çıktı verilir.